package com.shujia.list_;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListDemo {

    @Test
    public void testListRemove() {
        List list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(3);
        updateList(list);
        System.out.println(list);
    }

    private void updateList(List list) {
        // list.remove(2);// 2是下标还是元素??
        list.remove(Integer.valueOf(2));
    }


    @Test
    public void teste1() {
        // 因为Arrays内部类ArraysList 数组属性是final修饰
        // 所以长度是固定, 添加元素会报错, 但是可以修改元素
        List<String> book = Arrays.asList("战国策", "文史通义", "弘明集");
//        book.add("徐霞客游记");
        // book.remove(1); // 会改变数组的长度
        book.set(1, "春秋公羊传");
        System.out.println(book);

    }

    public static void main(String[] args) {
        List list = new ArrayList();
//        void add(int index, Object ele)：在index位置插入ele元素
        list.add("徐霞客游记");
        list.add("春秋公羊传");
        list.add("文史通义");

        System.out.println(list);

        // 比较消耗性能, 做了数组的移动
        // add涉及下标的指定, 这个方法尽量少用
        list.add(0, "弘明集");

        System.out.println(list);

//        boolean addAll(int index, Collection eles) ：从index位置开始将eles中的所有元素添加进来
        List<String> book = Arrays.asList("战国策", "文史通义", "弘明集");
        list.addAll(0, book);
        System.out.println(list);

//        Object get(int index) ：获取指定index位置的元素
        // 因为ArrayList底层是数组实现的, 所以使用下标方法数组的元素, 性能是很高的
        System.out.println(list.get(1));

//        int indexOf(Object obj) ：返回obj在集合中首次出现的位置
        int index = list.indexOf("徐霞客游记");
        System.out.println(index);

//        int lastIndexOf(Object obj) ：返回obj在当前集合中末次出现的位置
        System.out.println(list.lastIndexOf("弘明集"));


//        Object remove(int index) ：移除指定index位置的元素，并返回此元素
        System.out.println(list.remove(1));
        System.out.println(list);

//        Object set(int index, Object ele) ：设置指定index位置的元素为ele
        System.out.println(list.set(2, "文心雕龙"));
        System.out.println(list);

//        List subList(int fromIndex, int toIndex) ：返回从fromIndex到toIndex位置的子集合[fromIndex,toIndex)
        List subList = list.subList(3, 5);
        System.out.println(subList);
    }




}
